﻿String.prototype.format = function(strFormat) 
{ 
    var args = arguments;             
    return this.replace(    /\{(\d+)\}/g, 
                            function(m,i)
                            { 
                                return args[i]; 
                            }
                        ); 
} 

String.prototype.trim = function()
{
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.trimall = function()
{
	return this.replace(/\s*/g, "");
}

String.prototype.replaceAll = function(s1,s2)
{
	return this.replace(new RegExp(s1,"gm"),s2);    
}

/* 函  数 ：domGetElement
// 功  能 ：
// 参  数 ：
//	strIDName        - 
//	oDocument        - 
// 返回值 ：
*/
function domGetElement(strIDName, oDocument)
{
    var oDoc = oDocument==undefined ? document : oDocument;
    
    return oDoc.getElementById(strIDName);
}

function domGetBody(oDocument)
{ 
    var oDoc = oDocument==undefined ? document : oDocument;
    
    return oDoc.body;
}

/* 函  数 ：domGetElementCur
// 功  能 ：
// 参  数 ：
//	vElementObj      - 
// 返回值 ：
*/
function domGetElementCur(vElementObj)
{
     var oElement = null;
    
    if(typeof(vElementObj) == "string")
    {
        oElement = domGetElement(vElementObj);
    }
    else if(typeof(vElementObj) == "object")
    {
        oElement = vElementObj;
    }
    
    return oElement;
}


/* 函  数 ：domAppendHtml
// 功  能 ：
// 参  数 ：
//	oElement         - 
//	strHtml          - 
// 返回值 ：
*/
function domAppendHtml(strHtml, vElementObj)
{ 
    var oCurElement = vElementObj==undefined?document.body:domGetElementCur(vElementObj);
    if(oCurElement==null)
    	return null;
    
    var oRtnElement = null;
    var oDoc = oCurElement.ownerDocument;    
//    if(oCurElement!=oDoc.body && oCurElement.nodeName!="TR" && oCurElement.nodeName!="TBODY")
//    	oCurElement.innerHTML  = oCurElement.innerHTML + strHtml;
//    else
    {    	
    	var oTmpDiv = oDoc.createElement("div");
    	oTmpDiv.innerHTML = strHtml;
    	
    	//将所有子节点移到根节点下
    	var oAddElement = null;
    	while(oTmpDiv.childNodes.length>0)
    	{    		
    		oAddElement = oCurElement.appendChild(oTmpDiv.childNodes[0]);   //-每次添加一个节点，自动从文本片断中删除，计数减少 		
    		if(oRtnElement==null)
    		    oRtnElement = oAddElement;    	//- 返回第一项,可能用作父节点	
    	}
    	
    	//删除临时节点
    	domDeleteElement(oTmpDiv);
    }
    
    return oRtnElement;
}


function domSetHtml(strHtml, vElementObj)
{ 
    var oCurElement = vElementObj==undefined?document.body:domGetElementCur(vElementObj);
    if(oCurElement!=null)
    	oCurElement.innerHTML  = strHtml;        
}

/* 函  数 ：domDeleteElement
// 功  能 ：
// 参  数 ：
//	oElement         - 
// 返回值 ：
*/
function domDeleteElement(vElementObj)
{
    var oElement = domGetElementCur(vElementObj);
        
	if(oElement!=null)
	{
		var oParentObj = oElement.parentNode;
		if(oParentObj)
			oParentObj.removeChild(oElement);
	}
}

/* 函  数 ：domGetStyleObj
// 功  能 ：
// 参  数 ：
//	oElement         - 
// 返回值 ：
*/
function domGetStyleObj(vElementObj)
{
	var oElement = domGetElementCur(vElementObj);
	
	var vValue;
	if(oElement!=null)
    	vValue = oElement.style;
	
	return vValue;
}

function sChangeCSSToJavaScriptStyle(strCSSStyleName)
{
    var strNewStyleName = strCSSStyleName.replace(/-([a-z])/g, function(a0,a1,a2){return a1.toUpperCase();});    
    return strNewStyleName;    
}

/* 函  数 ：domGetStyleValue
// 功  能 ：
// 参  数 ：
//	oElement         - 
//	strName          - 
// 返回值 ：
*/
function domGetStyleValue(vElementObj, strName)
{
    var vValue;
    
    var oElement = domGetElementCur(vElementObj);        
	if(oElement!=null)
	{
	    try
        {
            var strJavaScriptStyle = sChangeCSSToJavaScriptStyle(strName);
            var strExp = "oElement.style."+strJavaScriptStyle;
            vValue = eval(strExp);
        }
        catch(e)
        {            
        }
	}
      
    return vValue;
}

/* 函  数 ：domSetStyleValue
// 功  能 ：
// 参  数 ：
//	oElement         - 
//	strName          - 
//	vValue           - 
// 返回值 ：
*/
function domSetStyleValue(vElementObj, strName, vValue)
{
    var oElement = domGetElementCur(vElementObj);        
	if(oElement==null)
	    return;
	    
    try
    {    
        var strJavaScriptStyle = sChangeCSSToJavaScriptStyle(strName);
        var strExp = "oElement.style." + strJavaScriptStyle + "='" + vValue +"';" ;
        eval(strExp);
    }
    catch(e)
    {
    }
}


/* 函  数 ：domSetStyleValue
// 功  能 ：
// 参  数 ：
//	oElement         - 
//	oStyleObj        - 
// 返回值 ：
*/
function domSetStyleValue1(vElementObj, oStyleObj)
{
    if(typeof(oStyleObj)!="object")
        return;
       
    var oElement = domGetElementCur(vElementObj);        
	if(oElement==null)
	    return;
	   
    var i; 
    var strExp = "";
    for(i in oStyleObj) 
    { 
        try
        {
            var strJavaScriptStyle = sChangeCSSToJavaScriptStyle(i);
            strExp = "oElement.style." + strJavaScriptStyle + "='" + oStyleObj[i] +"';";
            eval(strExp);
        }
        catch(e)
        {
        }
        
    }      
}

function domSetStyleValue2(vElementObj, strStyleParam)
{
	if(strStyleParam==undefined || strStyleParam=="")
		return;
			
	//-整理为标准的json格式-
	
        //-去除非标准的字符-
	var strStyle = strStyleParam.trim();
	if(strStyle=="")
	    return;
	if(strStyle.charAt(0)=="{" && strStyle.charAt(strStyle.length-1)=="}")
	    strStyle = strStyle.substr(1, strStyle.length-2);
	if(strStyle=="")
	    return;	        
	strStyle = strStyle.replaceAll("：", ":");
	strStyle = strStyle.replaceAll("；", ",");
	strStyle = strStyle.replaceAll("，", ",");
	strStyle = strStyle.replaceAll(";", ",");
	
	    //-去除最后一个-
	if(strStyle.charAt(strStyle.length-1)==",")
	    strStyle = strStyle.substr(0,strStyle.length-1);
    
        //-整理每个属性值-
    {
        var strSet = strStyle.split(",");
        strStyle = "";
        var strNameA  = "";
        var strValueA = "";
        for(var i=0; i<strSet.length; i++)
        {
            var strOneSet = strSet[i].split(":");
            if(strOneSet.length<2)
                continue;
            strOneSet[0] = strOneSet[0].trim();    
            strOneSet[1] = strOneSet[1].trim();
            
            //-对于 属性名 , 可能存在 中划线 的, 与减号存在冲突 -
            strNameA = sChangeCSSToJavaScriptStyle(strOneSet[0]);
            
            //-对于 属性值 , 存在blue等值, 要变成字符串 -
            if(strOneSet[1].length==0)
               strValueA = "''" ;
            else
            {
                if(strOneSet[1].charAt(0)=="'" || strOneSet[1].charAt(0)=="\"")
                    strValueA = strOneSet[1];     
                else
                    strValueA = "'" + strOneSet[1] + "'";
            }
            
            if(strStyle!="")
                strStyle += ",";
            strStyle += strNameA + ":" + strValueA;
        }
    }

	var strLastParam = "{" + strStyle + "};";	
	eval("var oStyleObj = " + strLastParam);	
    if(typeof(oStyleObj)!="object")
        return;
    
    domSetStyleValue1(vElementObj, oStyleObj);        
}

function domSetStyleXY(vElementObj, x, y, nType)
{
    var nLastType = nType==undefined ? 0 : nType;
    
    var oStyleObj = null;    
    switch(nLastType)
    {
        case 0: oStyleObj = {width: x+"px", height: y+"px"}; break;
        case 1: oStyleObj = {left: x+"px", top: y+"px"};    break;
        default: return;
    }
    
    domSetStyleValue1(vElementObj, oStyleObj); 
}